import { execute } from '@/store/baseAction'
import jwtParser from 'jwt-decode'
import { setCookie, getCookie, removeCookie } from '@/utils/cookie'
import * as userApi from '@/api/user'
import * as accountApi from '@/api/account'

// 解析用户
export function parserUser (context) {
    return execute(null, data => {
        let token = getCookie('token')
        if (token) {
            let parserToken = jwtParser(token)
            if (parserToken) {
                context.commit('setUser', parserToken)
            }
        }
    })
}

// 暂存当前用户可用权限
export function setEnablePermissions (context, payload) {
    return execute(null, data => {
        context.commit('setEnablePermissions', payload)
    })
}

// 发送验证码
export function sendAuthCode (context, payload) {
    return execute(accountApi.sendAuthCode(payload))
}

// 注册
export function register (context, payload) {
    return execute(accountApi.register(payload))
}

// 登录
export function login (context, payload) {
    return execute(accountApi.login(payload), data => {
        let token = data.access_token
        setCookie('token', token, 24 * 60 * 60 * 1000 * 7)
    })
}

// 重置密码
export function resetPassword (context, payload) {
    return execute(accountApi.resetPassword(payload))
}

// 登出，清除掉cookie和信息即可
export function logout (context) {
    return execute(null, () => {
        context.commit('logout')
        removeCookie('token')
    })
}

// 更改用户锁定状态
export function changeLockStatus (context, payload) {
    return execute(userApi.changeLockStatus(payload))
}

// 获取用户关键信息
export function listUserKeyInfo (context, payload) {
    return execute(userApi.listUserKeyInfo(payload))
}

// 分页获取用户关键信息
export function pageUserKeyInfo (context, payload) {
    return execute(userApi.pageUserKeyInfo(payload))
}

// 获取角色信息
export function listRoleInfo (context, payload) {
    return execute(userApi.listRoleInfo(payload))
}

// 分页获取角色信息
export function pageRoleInfo (context, payload) {
    return execute(userApi.pageRoleInfo(payload))
}

// 添加角色
export function insertRole (context, payload) {
    return execute(userApi.insertRole(payload))
}

// 更新角色
export function updateRole (context, payload) {
    return execute(userApi.updateRole(payload))
}

// 删除角色
export function deleteRole (context, payload) {
    return execute(userApi.deleteRole(payload))
}

// 获取权限列表
export function listPermission () {
    return execute(userApi.listPermission())
}

// 分页获取权限列表
export function pagePermission (context, payload) {
    return execute(userApi.pagePermission(payload))
}

// 获取单个用户角色记录
export function getOneUserRole (context, payload) {
    return execute(userApi.getOneUserRole(payload))
}

// 获取多个用户角色记录
export function listUserRole (context, payload) {
    return execute(userApi.listUserRole(payload))
}

// 分页获取多个用户角色记录
export function pageUserRole (context, payload) {
    return execute(userApi.pageUserRole(payload))
}

// 为用户赋予角色
export function insertUserRole (context, payload) {
    return execute(userApi.insertUserRole(payload))
}

// 修改用户赋予的角色
export function updateUserRole (context, payload) {
    return execute(userApi.updateUserRole(payload))
}

// 移除用户赋予的角色
export function deleteUserRole (context, payload) {
    return execute(userApi.deleteUserRole(payload))
}

// 获取单个角色权限记录
export function getOneRolePermission (context, payload) {
    return execute(userApi.getOneRolePermission(payload))
}

// 获取多个用户角色记录
export function listRolePermission (context, payload) {
    return execute(userApi.listRolePermission(payload))
}

// 分页获取多个用户角色记录
export function pageRolePermission (context, payload) {
    return execute(userApi.pageRolePermission(payload))
}

// 为角色赋予权限
export function insertRolePermission (context, payload) {
    return execute(userApi.insertRolePermission(payload))
}

// 修改角色赋予的权限
export function updateRolePermission (context, payload) {
    return execute(userApi.updateRolePermission(payload))
}

// 移除用户赋予的角色
export function deleteRolePermission (context, payload) {
    return execute(userApi.deleteRolePermission(payload))
}

// 获取当前用户信息
export function currentUserInfo () {
    return execute(userApi.currentUserInfo())
}

// 修改当前用户信息
export function updateCurrentUserInfo (context, payload) {
    return execute(userApi.updateCurrentUserInfo(payload))
}

// 获取单个用户信息
export function getOneUserInfo (context, payload) {
    return execute(userApi.getOneUserInfo(payload))
}

// 获取多个用户信息
export function listUserInfo (context, payload) {
    return execute(userApi.listUserInfo(payload))
}

// 分页获取多个用户信息
export function pageUserInfo (context, payload) {
    return execute(userApi.pageUserInfo(payload))
}

// 获取当前用户关注的用户
export function currentAttentionUsers (context) {
    let userId = context.getters.getUser.userId
    return execute(userApi.attentionUsers(userId), data => {
        context.commit('setAttentionUsers', data)
    })
}

// 获取用户关注的用户
export function attentionUsers (context, payload) {
    return execute(userApi.attentionUsers(payload))
}

// 分页获取用户关注的用户
export function pageAttentionUsers (context, payload) {
    return execute(userApi.pageAttentionUsers(payload))
}

// 获取用户的粉丝
export function fans (context, payload) {
    return execute(userApi.fans(payload))
}

// 分页获取用户的粉丝
export function pageFans (context, payload) {
    return execute(userApi.pageFans(payload))
}

// 关注用户
export function attentionUser (context, payload) {
    return execute(userApi.attentionUser(payload))
}

// 取消关注用户
export function removeAttentionUser (context, payload) {
    return execute(userApi.removeAttentionUser(payload))
}
